<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>
// ES6中Object的静态方法：

// let obj1 = {
//     name: '张三',
//     [Symbol('age')]: 23,
//     [Symbol('sex')]: '女'
// }

// Object.getOwnPropertySymbols(obj) 获取obj对象的所有Symbol属性，返回数组
// let arr = Object.getOwnPropertySymbols(obj1);
// console.log( arr );// [Symbol(age), Symbol(sex)]
// console.log( obj1[arr[0]] );// 23
// console.log( obj1[arr[1]] );// '女'


// Object.keys(obj) 获取obj对象自身所有可枚举属性，返回数组
// Object.values(obj) 获取obj对象自身所有可枚举属性的值，返回数组
// Object.entries(obj) 获取obj对象自身所有可枚举属性和值，返回二维数组
// let obj2 = {
//     name: '张三',
//     age: 23,
//     sex: '女'
// }
// console.log( Object.keys(obj2) );// ['name', 'age', 'sex']
// console.log( Object.values(obj2) );// ['张三', 23, '女']
// console.log( Object.entries(obj2) );// [['name', '张三'],['age', 23],['sex', '女']]


/* // Object.is(val1,val2) 判断val1和val2是否全等（===）
console.log( NaN === NaN );// false
console.log( +0 === -0 );// true
console.log( Object.is(NaN,NaN) );// true
console.log( Object.is(+0,-0) );// false

// 其他比较结果一样：
console.log( '1' === 1 );// false
console.log( Object.is('1',1) );// false
console.log( {} === {} );// false
console.log( Object.is({},{}) );// false */


// Object.assign(target,source1,source2...)将source1,source2...等对象的属性，拷贝到target对象上（浅拷贝）
// 浅拷贝，拷贝引用类型时，只拷贝引用地址
// 深拷贝，拷贝引用类型时，拷贝整个对象（创建一个新的对象）

let obj = {
    name: '老罗'
}
let obj2 = {
    age: 25,
    friends: ['小红','小芳','小花']// 数组的引用地址为：0x002
}
let obj3 = {
    sex: '男',
    say: function (){// 0x003
        console.log( 'hi' );
    }
}
Object.assign(obj,obj2,obj3);// 将obj2和obj3的属性拷贝到obj对象上(浅拷贝)

// 修改对象的属性
obj2.friends.push('小薇');
obj.friends.push('如花');

console.log( obj );// {name: '老罗', age: 25, friends: 0x002, sex: '男', say: ƒ}
console.log( obj2 );// {age: 25, friends: 0x002}
console.log( obj.say === obj3.say );// true


let obj4 = {
    "name": "李四",
    "age": 25,
    "sex": "男",
    "friends": ['小红','小芳','小花']
}
let obj5 = JSON.parse( JSON.stringify(obj4) );// 深拷贝
console.log( obj5 );
console.log( obj4.friends === obj5.friends );// false
obj4.friends.push('小薇');
console.log( obj4.friends );// ['小红', '小芳', '小花', '小薇']
console.log( obj5.friends );// ['小红', '小芳', '小花']

</script>
</body>
</html>